/** @file hmm_model.h
 *
 *  @author Dongryeol Lee (drselee@gmail.com)
 */

#ifndef MLPACK_HMM_DISCRETE_HMM_MODEL_H
#define MLPACK_HMM_DISCRETE_HMM_MODEL_H

#include <armadillo>

#include "core/abstract/abstract_model.h"

namespace mlpack {
namespace hmm {
class DiscreteHmmModel : public core::abstract::AbstractModel {

  private:

    friend class mlpack::hmm::DiscreteHmm;

    /** @brief The (i, j)-th entry = probability of getting from
     *         state i to state j, p(z_t = j | z_{t - 1} = i)
     */
    arma::mat transition_probabilities_;

    /** @brief The prior probabilities for each state.
     */
    arma::vec prior_probabilities_;

    /** @brief The local evidence matrix. (i, j)-th entry = p(x_j |
     *         z_i).
     */
    arma::mat local_evidence_matrix_;

  public:
    template<typename DatasetType, typename PointType>
    double Evaluate(
      const DatasetType &training_data_in,
      const PointType &test_point_in) const {

      return 0.0;
    }
};
}
}

#endif
